home *** CD-ROM | disk | FTP | other *** search
/ Floppyshop 2 / Floppyshop - 2.zip / Floppyshop - 2.iso / art&graf.ix / art-0015 / flicker / input.c < prev    next >
C/C++ Source or Header  |  1997-04-16  |  2KB  |  151 lines

  1.  
  2. #include <gemdefs.h>
  3. #include <osbind.h>
  4. #include "flicker.h"
  5.  
  6. extern WORD *aline;
  7. extern WORD handle;
  8. extern long beam_peek();
  9.  
  10. WORD mouse_button, omouse_button;
  11. WORD mouse_x, mouse_y;
  12. WORD lastx, lasty;
  13. WORD mouse_moved;    /* mouse not same as last time - x,y or buttons */
  14. WORD key_hit;
  15. long key_in;
  16. WORD mouse_on = 1;
  17.  
  18. static WORD reuse;
  19. static WORD lmousex = -1000, lmousey = -1000;  /* initialize offscreen */
  20.  
  21. reuse_input()
  22. {
  23. reuse = 1;
  24. }
  25.  
  26. check_input()
  27. {
  28. register WORD *a;
  29. unsigned long l;
  30. unsigned WORD w;
  31. WORD mouse_color;
  32.  
  33. if (reuse)
  34.     {
  35.     reuse = 0;
  36.     return;
  37.     }
  38. a = aline;
  39. lastx = mouse_x;
  40. lasty = mouse_y;
  41. omouse_button = mouse_button;
  42. mouse_x = *(a-301);
  43. mouse_y = *(a-300);
  44. mouse_button = *(a-174);
  45. if (Cconis())
  46.     {
  47.     key_hit = 1;
  48.     l = Crawcin();
  49.     w = l>>8;
  50.     w += l;
  51.     key_in = w;
  52.     }
  53. else
  54.     key_hit = 0;
  55. if (zscale_cursor)
  56.     {
  57.     mouse_x >>= 2;
  58.     mouse_x += zoomx;
  59.     mouse_y >>= 2;
  60.     mouse_y += zoomy;
  61.     }
  62. if (mouse_x == lastx && mouse_y == lasty && mouse_button == omouse_button)
  63.     mouse_moved = 0;
  64. else
  65.     mouse_moved = 1;
  66. if (mouse_on)
  67.     {
  68.     if (mouse_moved)
  69.         {
  70.         wait_out_beam();
  71.         restore_m();
  72.         save_m();
  73.         draw_m();
  74.         }
  75.     }
  76. }
  77.  
  78. draw_m()
  79. {
  80. draw_shifted(mouse_x-8, mouse_y-8, oppositec[ getdot(mouse_x, mouse_y) ]);
  81. }
  82.  
  83.  
  84. hide_mouse()
  85. {
  86. if (mouse_on)
  87.     {
  88.     restore_m();
  89.     mouse_on = 0;
  90.     }
  91. }
  92.  
  93. show_mouse()
  94. {
  95. if (!mouse_on)
  96.     {
  97.     save_m();
  98.     draw_m();
  99.     mouse_on = 1;
  100.     }
  101. }
  102.  
  103. ghide_mouse()
  104. {
  105. v_hide_c(handle, 0);
  106. }
  107.  
  108. gshow_mouse()
  109. {
  110. v_show_c(handle, 0);
  111. }
  112.  
  113.  
  114. init_input()
  115. {
  116. ghide_mouse();
  117. set_brush(0);
  118. return(1);
  119. }
  120.  
  121. wait_penup()
  122. {
  123. for (;;)
  124.     {
  125.     check_input();
  126.     if (!PDN)
  127.         break;
  128.     }
  129. }
  130.  
  131. wait_ednkey()
  132. {
  133. for (;;)
  134.     {
  135.     check_input();
  136.     if (EDN || key_hit)
  137.         break;
  138.     }
  139. }
  140.  
  141. wait_rup()
  142. {
  143. for (;;)
  144.     {
  145.     check_input();
  146.     if (!RDN)
  147.         break;
  148.     }
  149. }
  150.  
  151.